/*
  Programa GEFE - Gestión de eventos lúdicos.
  Copyright (C) 2010  Antonio Ramírez Marti

  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

#ifndef BOTONPRODUCTO_H
#define BOTONPRODUCTO_H

#include <QPushButton>

/*!
  PushButton para los productos de venta en la zona de bebidas

  Los productos de venta en la zona de bebida tienen tres caracteristicas importantes:
  - <b>Nombre del producto</b>: Nombre del producto a la venta.
  - <b>Precio de venta al publico</b>: Precio de venta del producto al público.
  - <b>Precio de venta al organizador</b>: Precio de venta del producto a la organizacion

  El nombre del producto coincide con el nombre presentado en el boton.
  */

class BotonProducto : public QPushButton
{
Q_OBJECT
Q_PROPERTY (double precioVenta READ getPrecioVenta WRITE setPrecioVenta)
Q_PROPERTY (double precioOrg READ getPrecioOrg WRITE setPrecioOrg)
public:
    explicit BotonProducto(QWidget *parent = 0);

    /*!
      Devuelve el precio de venta del producto
      */

    double getPrecioVenta() const
    {
        return precioVenta;
    }

    /*!
      Devuelve el precio de organizacion del producto
      */

    double getPrecioOrg() const
    {
        return precioOrg;
    }


signals:

    /*!
      Producto solicitado, esta señal se emite cuando se pulsa el boton
      */

    void productoSolicitado(QString nombre,double precioVenta,double precioOrg);

public slots:

    /*!
      Establece el precio de venta del producto
      */

    void setPrecioVenta(double precio)
    {
        precioVenta=precio;
    }

    /*!
      Establece el precio de organizacion del producto
      */

    void setPrecioOrg(double precio)
    {
        precioOrg=precio;
    }

private:
    double precioVenta;    ///< Precio de venta al publico
    double precioOrg;      ///< Precio del organizador

    /*!
      Prepara el Boton
      */

    void setup();

private slots:

    /*!
      Emite la señal de productoSolicitado
      */

    void botonPulsado();

};

#endif // BOTONPRODUCTO_H
